package com.luom.fsp.model.vo;

import com.luom.fsp.model.entity.Order;
import lombok.Data;
import org.springframework.beans.BeanUtils;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 订单视图
 *
*/
@Data
public class OrderVO implements Serializable {

    /**
     * 订单id
     */
    private Long id;

    /**
     * 所属用户id
     */
    private Long userId;

    /**
     * 所属用户
     */
    private UserVO user;

    /**
     * 收货地址id
     */
    private Long addressId;

    /**
     * 收货地址
     */
    private AddressVO address;

    /**
     * 商品规格id
     */
    private Long skuId;

    /**
     * 商品规格
     */
    private ProductSKUVO productSKUVO;

    /**
     * 商品
     */
    private ProductMainVO product;

    /**
     * 商品数量
     */
    private Integer quantity;

    /**
     * 总价
     */
    private BigDecimal totalPrice;

    /**
     * 原金额
     */
    private BigDecimal originalPrice;

    /**
     * 优惠金额
     */
    private BigDecimal discountAmount;

    /**
     * 订单状态订单状态（pending:待支付，paid:已支付，shipped:已发货，completed:已完成，cancelled:已取消，refunded:已退款）
     */
    private String orderStatus;

    /**
     * 支付状态（pending:待支付，success:支付成功，failed:支付失败，refunded:已退款）
     */
    private String paymentStatus;

    /**
     * 支付时间
     */
    private Date paymentTime;

    /**
     * 是否有评论
     */
    private Integer hasReview;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 封装类转对象
     *
     * @param orderVO
     * @return
     */
    public static Order voToObj(OrderVO orderVO) {
        if (orderVO == null) {
            return null;
        }
        Order order = new Order();
        BeanUtils.copyProperties(orderVO, order);
        return order;
    }

    /**
     * 对象转封装类
     *
     * @param order
     * @return
     */
    public static OrderVO objToVo(Order order) {
        if (order == null) {
            return null;
        }
        OrderVO orderVO = new OrderVO();
        BeanUtils.copyProperties(order, orderVO);
        return orderVO;
    }
}
